#include <iostream>
using namespace std;

void fun1(char *str){
    *str = '@';
}
void fun2(char *str){
    str[0] = '@';
}
void fun3(char str[]){
    str[0] = '@';
}
void fun4(char str[]){
    *str = '@';
}
void fun5(char **str){
    **str = '@';
}
void fun6(char **str){
    (*str)[0] = '@';
}

int main(){

    //""字面量都是错的
//    fun1("hello");
//    fun2("hello");
//    fun3("hello");
//    fun4("hello");

    //*字符指针都是错的
    char *str4 = "hello";
//    fun1(str4);
//    fun2(str4);
//    fun3(str4);
//    fun4(str4);
//    fun5(&str4);
//    fun6(&str4);

    //[]都是对的
    char str2[20] = "123";
//    char *str2 = "123";//报错
    fun1(str2);
    printf("%s\n", str2);

    char str3[] = "123";
    fun1(str3);
    printf("%s\n", str3);

    //malloc（）的都是对的
    char *str = (char *)malloc(sizeof(char) * 10);
    fun1(str);
    fun2(str);
    fun3(str);
    fun4(str);
    fun5(&str);
    fun6(&str);
    printf("%s\n", str);

    return 0;
}